package com.tjetc.controller;

import com.tjetc.entity.User;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * 演示json数据
 * @author gaoyongxiang
 * @version v1.0
 * @date 2025/9/5
 */
// 简化操作 由@Controller 和 @ResponseBody 组合而来
    // @ResponseBody 这个注解放在类上 表示 该类中所有的接口 都响应json数据
@RestController


//@Controller
@RequestMapping("/json/")
public class _8JsonController {

    //SpringMVC对返回值 如果是String 那么返回的是视图名称
    //如果返回的ModelAndView 那么返回的就是model 和 视图
    // 如果我们想要返回的就是数据 那么需要加上@ResponseBody

    // 我们将来会做前后端分离 后端只用来响应 不会在响应页面 所以我们接口返回的数据 全部都是json
//    @ResponseBody
    @RequestMapping("f")
    public String f(){
        return "张三";
    }

//    响应json数据
    @RequestMapping("f1")
    public ResponseEntity<User> f1(){
        User user = new User();
        user.setUsername("zhangsan");
        ResponseEntity<User> responseEntity = new ResponseEntity<>(user, HttpStatusCode.valueOf(200));
        return responseEntity;
    }


    // 接收json数据请求
    // @@RequestBody 接收前端发送的json数据
    // 如果不使用 会出现路径和请求体混用的问题 ，以及无法解析复杂json的情况
    @RequestMapping("f2")
    public User f2(@RequestBody User user){
        System.out.println(user.getUsername());
        user.setUsername("lisi");
        return user;
    }


    @RequestMapping("f3")
    public List<User> f3(){
        List<User> list = new ArrayList<>();
        list.add(new User());
        list.add(new User());
        return list;
    }



}